<?php

/**
 * 检测并返回用户的登录id
 * @return bool
 */
function is_login(){
    return session('uid')?: false;
}

/**
 * 检测某个管理员是否为超级管理员
 * @param null $uid 若不传则获取当前管理员
 * @return bool
 */
function is_root($uid=null){
    $uid = !is_null($uid)? $uid: is_login();
    return $uid === config('super_administrator');
}

/**
 * 字节格式化显示
 * @param $size
 * @return string
 */
function byte_format($size){
    $unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
    return @round($size/pow(1024, ($i=floor(log($size, 1024)))), 2).' '.$unit[$i];
}

/**
 * 获取系统信息
 * @return array
 */
function get_system_info(){
    //todo: 考虑缓存
    $system_info = [
        ['name'=>'当前时间', 'value'=>date('Y-m-d H:i:s')],
        ['name'=>'PHP内存占用', 'value'=>byte_format(memory_get_usage())],
        ['name'=>'服务器版本', 'value'=>apache_get_version()],
        ['name'=>'PHP版本', 'value'=>phpversion()],
        ['name'=>'域名', 'value'=>\think\facade\Request::domain()],
        ['name'=>'IP地址', 'value'=>\think\facade\Request::ip()],
        ['name'=>'当前SessionID', 'value'=>session_id()],
        ['name'=>'SessionID存储路径', 'value'=>session_save_path()]
    ];
    return $system_info;
}

/**
 * 获取文件保存后的url
 * @param $fileKey
 * @return array
 */
function save_upload_file($fileKey){
    $file = \think\facade\Request::file($fileKey);
    $result = ['status_code'=>-1, 'status_msg'=>'未知错误！'];
    if (!$file){
        $result['status_code'] = 0;
        $result['status_msg'] = '没有文件！';
        return $result;
    }
    //保存文件
    $webPath = \think\facade\Env::get('root_path').'public';//网站根目录
    $info = $file->validate(['ext'=>'jpg,png,gif,jpeg'])->move($webPath.config('upload_path'));
    if (!$info){
        $result['status_msg'] = $file->getError();
        return $result;
    }
    //保存成功
    $result['status_code'] = 1;
    $result['status_msg'] = $info->getSaveName();
    //若是Windows平台，需要转换目录分隔符
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'){
        $result['status_msg'] = str_replace('\\', '/', $result['status_msg']);
    }
    return $result;
}
